package com.wuzao.wrapperClassTest.binaryTest;



public class BinaryTest {
    public static void main(String[] args) {
        int i = 10;
        System.out.println(Integer.toBinaryString(i));
        int i2 = 1<<2;
        System.out.println(i2);

        getBit();
        bitCount();


    }

    /**
     * 判断某位的值
     *
     * 注意两件事：
     * 1、构造掩码
     * 2、 & 的时候，是看他是否等于 0 ，而不是看结果是否 等于 1
     */
    public static void getBit(){
        int num = 13; // 二进制表示为 1101
        int n = 2;    // 获取第 2 位的值

        // 构造掩码
        int mask = 1 << n;

        // 按位与操作
        int bitValue = (num & mask) != 0 ? 1 : 0;

        System.out.println("第 " + n + " 位的值是: " + bitValue);
    }

    /**
     * 获取 int 类型（32位） 的某个数 在二进制 下的位数
     */
    public static void bitCount(){
        int mx = 1;
        int m = 32 - Integer.numberOfLeadingZeros(mx); // mx 的二进制长度
    }
}
